package com.gitee.jmliu1983.javautils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import java.time.OffsetDateTime;  

import java.time.format.DateTimeFormatter;  

import java.time.ZoneId;  

public class DatetimeUtils {
	private static SimpleDateFormat sdf;
	private static OffsetDateTime dateTime;

	public static SimpleDateFormat getSimpleDateFormatInstance() {
		if (sdf == null)
			sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
		return sdf;
	}
	
	public static OffsetDateTime getOffsetDateTimeInstance() {
//		OffsetDateTime
//		if (dateTime == null)
//			dateTime = new OffsetDateTime()
//		return dateTime;
		return null;
	}
	
	public static Date parseISODate(String isoDateString) {
        // 定义ISO格式的时间字符串  
//        String isoDateString = "2023-10-05T14:30:00+02:00";  

        // 创建DateTimeFormatter对象，用于解析ISO格式  
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;  

        // 解析字符串为OffsetDateTime对象  
        OffsetDateTime dateTime = OffsetDateTime.parse(isoDateString, formatter);  

        // 输出解析后的结果  

//        System.out.println("解析后的OffsetDateTime: " + dateTime.toZonedDateTime().toString());  
        // 如果你需要将OffsetDateTime转换为Date对象（尽管通常不推荐这样做）  

        java.util.Date utilDate = java.util.Date.from(dateTime.toInstant());  

//        System.out.println("转换为java.util.Date: " + utilDate);  		
		return utilDate;
				
	}

	public static Date parseDate(String dateString, String pattern) {
		// 定义日期字符串和模式
//        String dateString = "2023-10-05 14:30:00";  
		if (pattern == null)
			pattern = "yyyy-MM-dd HH:mm:ss";
		
		// 创建SimpleDateFormat对象

		try {
			// 解析字符串为Date对象
			DatetimeUtils.getSimpleDateFormatInstance().applyPattern(pattern);
			Date date = DatetimeUtils.getSimpleDateFormatInstance().parse(dateString);
			System.out.println("解析后的日期: " + date);
			return date;

		} catch (ParseException e) {
			// 处理解析异常
			System.err.println("解析日期字符串时出错: " + e.getMessage());
			return null;

		}
	}
}
